#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int main()
{
   // umask(0);
   // close(1);
   // int fd = open("log1.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);

   // printf("hello printf\n");
   // fprintf(stdout,"hello fprintf stdout\n");
   // const char* msg = "hello write\n";
   // write(1,msg,strlen(msg));
   // fprintf(stderr,"hello fprintf stderr\n");

    //close(fd);
    //C语言库中的FILE维护了一个缓冲区，程序结束（进程退出）时会被OS刷新到文件缓冲区，再刷新到文件中。
    //关闭了fd，进程退出时找不到维护的文件，也就找不到对应的文件缓冲区，FILE维护的缓冲区的内容无法被刷新
    //因此在log1.txt文件中看不到"hello printf"和"hello fprintf stdout"(注释掉close就可以看到了)
    //write是系统接口，直接写入OS的文件缓冲区，OS会自动刷新到文件上
    
    close(0);
    int fd1 = open("log2.txt",O_RDONLY);
    int a = 0,b = 0;
    char ch = '0';
    scanf("%d %d",&a,&b);
    fscanf(stdin," %c",&ch);

    //磁盘文件 --> 文件缓冲区 --> FILE缓冲区 --> 变量空间 

    printf("%d %d %c\n",a,b,ch);
    
    close(fd1);

    return 0;
}
